LLM 25일 코스 - Day 6: LLM이란? 대규모 언어모델의 원리

Day 6: LLM이란? 대규모 언어모델의 원리

LLM(Large Language Model)은 단순히 “큰 모델”이 아닙니다. 일정 규모를 넘어서면 작은 모델에서는 불가능했던 능력이 갑자기 나타납니다. 이것이 LLM이 특별한 이유입니다.

LLM의 핵심: Next Token Prediction

LLM의 학습 목표는 놀라울 정도로 단순합니다. 다음 토큰을 예측하는 것 이 전부입니다.

# LLM의 사전학습은 이것이 전부
# 입력: "오늘 날씨가 정말"
# 정답: "좋다"

# 수조 개의 토큰에 대해 이 작업을 반복하면
# 언어의 문법, 사실, 추론 능력까지 학습

def next_token_prediction_loss(model, text_tokens):
    """사전학습의 핵심 손실 함수"""
    total_loss = 0
    for i in range(1, len(text_tokens)):
        context = text_tokens[:i]          # 이전 토큰들
        target = text_tokens[i]            # 다음 토큰 (정답)
        predicted = model(context)         # 모델의 예측
        loss = cross_entropy(predicted, target)
        total_loss += loss
    return total_loss / (len(text_tokens) - 1)

스케일링 법칙 (Scaling Laws)

Chinchilla 논문(2022)이 밝힌 최적 학습 규칙:

파라미터 수최적 토큰 수예시 모델
1B20B 토큰Phi-2 수준
7B140B 토큰Llama 2 7B
13B260B 토큰Llama 2 13B
70B1.4T 토큰Llama 2 70B
# Chinchilla 법칙: 최적 토큰 수 ≈ 20 × 파라미터 수
def optimal_tokens(num_params_billions):
    return num_params_billions * 20  # 단위: 십억(B) 토큰

# 예시
for size in [1, 7, 13, 70]:
    tokens = optimal_tokens(size)
    print(f"{size}B 모델 → 최적 {tokens}B 토큰 학습")

하지만 최근에는 이 법칙을 초과하여 학습하는 경우가 많습니다. Llama 3 8B는 15T 토큰으로 학습했는데, 이는 Chinchilla 최적의 약 100배입니다.

파라미터 규모별 특징

model_capabilities = {
    "1B 이하": {
        "가능": ["간단한 분류", "감성 분석", "키워드 추출"],
        "어려움": ["복잡한 추론", "긴 글 생성", "코드 작성"],
        "예시": "DistilBERT, TinyLlama",
    },
    "7B ~ 13B": {
        "가능": ["일반 대화", "간단한 코딩", "요약", "번역"],
        "어려움": ["수학 추론", "복잡한 분석"],
        "예시": "Llama 3 8B, Mistral 7B",
    },
    "30B ~ 70B": {
        "가능": ["복잡한 추론", "전문 코딩", "긴 문서 분석"],
        "어려움": ["최상위 수학", "전문 의료/법률"],
        "예시": "Llama 3 70B, Mixtral 8x7B",
    },
    "100B 이상": {
        "가능": ["고급 추론", "멀티턴 대화", "창의적 작문"],
        "특징": "창발적 능력 본격 발현",
        "예시": "최신 GPT 상위 모델, 최신 Claude Opus",
    },
}

for size, info in model_capabilities.items():
    print(f"\n{'='*40}")
    print(f"규모: {size}")
    print(f"가능: {', '.join(info['가능'])}")
    print(f"예시: {info['예시']}")

창발적 능력 (Emergent Abilities)

# 창발적 능력: 모델 크기가 임계점을 넘으면 갑자기 나타나는 능력
# 작은 모델에서는 성공률이 0%에 가깝다가, 특정 크기에서 급등

emergent_abilities = {
    "Chain-of-Thought 추론": "단계별 사고 과정을 거쳐 정답 도출",
    "Few-shot 학습": "몇 개의 예시만 보고 새 태스크 수행",
    "코드 생성": "자연어 설명을 코드로 변환",
    "다국어 번역": "학습하지 않은 언어 쌍도 번역",
    "산술 추론": "여러 단계의 수학 문제 풀기",
}

print("LLM의 창발적 능력:")
for ability, description in emergent_abilities.items():
    print(f"  - {ability}: {description}")

# 주의: 최근 연구에서는 "창발적 능력"이 측정 방식의
# 아티팩트일 수 있다는 반론도 있습니다.
# 평가 지표를 연속적으로 바꾸면 급격한 전환이 사라진다는 주장.

LLM의 힘은 단순한 목표(다음 토큰 예측)를 극단적 규모로 수행한 결과입니다. 내일부터는 실제 LLM 모델들을 하나씩 살펴봅니다.

오늘의 연습문제

  1. “다음 토큰 예측”만으로 어떻게 질문에 답하는 능력이 생기는지 직관적으로 설명해보세요. (힌트: 학습 데이터에 Q&A 형식의 텍스트가 포함)
  2. Chinchilla 법칙에 따르면 3B 파라미터 모델의 최적 학습 토큰 수는 얼마인지 계산하고, 실제 Phi-3(3.8B)가 몇 토큰으로 학습했는지 조사해보세요.
  3. 창발적 능력이 “측정의 아티팩트”라는 주장에 대해 조사하고, 본인의 의견을 정리해보세요.

이 글이 도움이 되었나요?